package com.unknowpupil.cloud.consumer.profile.feign;


import com.unknowpupil.cloud.configuration.feign.FeignRequestConfiguration;
import com.unknowpupil.cloud.consumer.profile.dto.IconParam;
import com.unknowpupil.cloud.consumer.profile.dto.PasswordParam;
import com.unknowpupil.cloud.consumer.profile.dto.ProfileParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * <p>
 * 这个报名 要和启动类扫描的包名相同 不然扫不到就报错
 * </p>
 * 暴露接口 feign是一个伪http 这就吧这个spring cloud 接口通用出来，如果想要调用springcloud服务只要把feign接口依赖到自己项目当中就可以随时调用。
 *
 * @Classname: ProfileFeign
 * @Author: <a> w10g </a>
 * @CreateDate: Create in 2020/1/4 14:05
 * @Description: 接口
 * 根据服务名字 来请求的 path = "profile" 正好对应这pupil-un-profile-server-controller requestMapping
 * configuration = FeignRequestConfiguration.class 增加这个配置这样
 * feign就会带着请求头和体去到目标服务 解决了单点登陆的springcloud 的feign调用问题 去往pupil-consumer-oauth2看看
 * @Version: 1.0
 */

@FeignClient(value = "pupil-un-profile-server", path = "profile", configuration = FeignRequestConfiguration.class)
public interface ProfileFeign {
    /**
     * 这个的存在就是自己的项目可以http访问这个
     */
    /**
     * 获取用户信息
     * @param username
     * @return
     */
    @GetMapping(value = "info/{username}")
    String info(@PathVariable("username") String username);

    /**
     * 更新用户信息
     * @param profileParam {@link ProfileParam}
     * @return {@code String} Json
     */
    @PostMapping(value = "update")
    String update(@RequestBody ProfileParam profileParam);

    /**
     * 修改密码
     * @param passwordParam {@link PasswordParam}
     * @return {@code String} Json
     */
    @PostMapping(value = "modify/password")
    String modifyPassword(@RequestBody PasswordParam passwordParam);

    /**
     * 修改头像
     * @param iconParam {@link IconParam}
     * @return {@code String} Json
     */
    @PostMapping(value = "modify/icon")
    String modifyIcon(@RequestBody IconParam iconParam);


}
